#ifndef __DYNAMICARRAYTEXT_H_
#define __DYNAMICARRAYTEXT_H_
#define ElementType int
#include <iostream>

class DynamicArrayText
{
public:
    DynamicArrayText();
    ~DynamicArrayText();
    DynamicArrayText(const DynamicArrayText &d);
    DynamicArrayText& operator=(const DynamicArrayText &d);

    //void show(void(*func)(ElementType));//传函数指针进来

    //扩容
    void Resize(int newcapacity);//传入数组大小

    //尾插法
    void InsertTail(ElementType element);//传入元素

    //头插法
    void InsertHead(ElementType element);

    //中间插入
    void InsertByIndex(ElementType element, int index);//传入元素，及元素插入的位置

    //按位置删除
    void RemoveByIndex(int index);

    //按值删除
    void RemoveByElement(ElementType element);

    //按位置修改
    void UpDataByIndex(int index, ElementType newElement);//传入修改的位置及新的元素

    //按值修改
    void UpDataByElement(ElementType oldValue, ElementType newValue);

    //按位置查:方括号的重载
    ElementType & operator[](int index);//返回下标index上的值

    //按值查
    DynamicArrayText FindByElement(ElementType element);
    friend std::ostream &operator<<(std::ostream &os, const DynamicArrayText & d);

private:
    
    ElementType *a;
    int size;
    int capacity;
};

std::ostream &operator<<(std::ostream &os, const DynamicArrayText & d);




#endif